Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: support host monitor #1890

Merged
merged 27 commits into from
Feb 27, 2025
Merged

feat: support host monitor #1890

merged 27 commits into from
Feb 27, 2025

Conversation

Abingcbc
Copy link
Collaborator

  1. 打通进程元信息采集链路

TODO:

  1. 支持更多字段
  2. 可观测指标

@Abingcbc Abingcbc force-pushed the host_monitor branch 6 times, most recently from 6150e52 to bfdd9c2 Compare November 19, 2024 06:27
fix
fix
fix
fix
fix
fix
fix
ThreadPool mThreadPool;

mutable std::shared_mutex mRegisteredCollectorMapMutex;
std::unordered_map<std::string, bool> mRegisteredCollectorMap;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

std::unordered_map<std::string, bool> mRegisteredCollectorMap;
std::unordered_map<std::string, std::shared_ptr<BaseCollector>> mCollectorInstanceMap;

这两个变量有点不合理。
包括
1、HostMonitorInputRunner::GetCollector的使用上。应该是自闭环合法性
2、锁的关系等
3、RegisterCollector 操作的变量是 mCollectorInstanceMap,但是另一个没操作的变量却叫reg

可能的优化
1、保持现有逻辑。一组功能不用过多发散变量,以上改成一个map。value用结构体表示。整体实现结构优化下。
2、UpdateCollector时再注册ProcessEntityCollector实例,这样能省一个变量。

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

fix

const std::string ProcessEntityCollector::sName = "process_entity";

ProcessEntityCollector::ProcessEntityCollector() : mProcessSilentCount(INT32_FLAG(process_collect_silent_count)) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

任务执行异步
超时影响
不同任务类型见例如Prometheus、host entity、processo不影响

Copy link
Collaborator Author

@Abingcbc Abingcbc Jan 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. 线程池放入不会堵塞,runner拿到任务后,可以立刻放入线程池
  2. 在一个任务执行结束后,再放入下一个任务。一个任务超时,会计算从上一次执行时间开始,增加n个周期,到达下一个未来可执行的时间点。
    nextExecTime = execTime + n * interval

fix
fix
fix
// process entity
const std::string DEFAULT_CONTENT_VALUE_ENTITY_TYPE_ECS_PROCESS = "acs.ecs.process";
const std::string DEFAULT_CONTENT_VALUE_ENTITY_TYPE_HOST_PROCESS = "infra.host.process";
const std::string DEFAULT_CONTENT_KEY_PROCESS_PID = "pid";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

字段是如何跟安全保持一致的?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

找讯飞看了一下ebpf那边代码还比较乱,自己维护了一套constant,没有用公共的。
是否可以先合入,然后等ebpf合入后,两边再对齐一下?

fix
fix
fix
fix
fix

const size_t ProcessTopN = 20;

const std::string ProcessEntityCollector::sName = "process_entity";
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

fix
@Abingcbc Abingcbc merged commit f3bebd7 into alibaba:main Feb 27, 2025
15 checks passed
@henryzhx8 henryzhx8 added the feature New feature label Feb 28, 2025
@henryzhx8 henryzhx8 added this to the v3.1 milestone Feb 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants