总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、部署背景
由于业务系统的特殊性,我们需要面对不同的客户部署业务系统,监控作为重要的一环,为了更快捷有效的部署业务监控系统,这里编写了基于x86_64架构一键离线docker容器版监控系统工具。
1.1、包含监控组件如下所示:
监控组件 | 版本 | 说明 |
---|---|---|
node-exporter | v1.8.1 | 采集服务器层面监控数据 |
blackbox-exporter | v0.25.0 | 采集http、https、dns、tcp、icmp层面监控数据 |
prometheus | v2.52.0 | 存储监控数据 |
grafana | 11.0.0-ubuntu | 监控可视化 |
alertmanager | v0.27.0 | 告警通知 |
webhook-dingtalk | v2.1.0 | 钉钉告警插件 |
1.2、监控组件容器镜像如下所示:
监控组件 | 版本 | 下载命令 |
---|---|---|
node-exporter | v1.8.1 | docker pull prom/node-exporter:v1.8.1 |
blackbox-exporter | v0.25.0 | docker pull prom/blackbox-exporter:v0.25.0 |
prometheus | v2.52.0 | docker pull prom/prometheus:v2.52.0 |
grafana | 11.0.0-ubuntu | docker pull grafana/grafana-oss:11.0.0-ubuntu |
alertmanager | v0.27.0 | docker pull prom/alertmanager:v0.27.0 |
webhook-dingtalk | v2.1.0 | docker pull timonwong/prometheus-webhook-dingtalk:v2.1.0 |
1.3、grafana dashboard模板及prometheus rules文件如下所示:
dashboard模板下载 | prometheus rules参考 | prometheus Third-party exporters |
---|
二、工具介绍
一键部署工具实现功能如下:
1、支持单机部署(1 node-exporter + 1 blackbox-exporter +1 prometheus + 1 grafana + 1 alertmanager + 1 webhook-dingtalk)。
2、支持多机部署(N个 node-exporter + 1 blackbox-exporter +1 prometheus + 1 grafana + 1 alertmanager + 1 webhook-dingtalk)。
3、支持数据目录、端口、Grafana管理平台用户密码的灵活配置。
4、支持blackbox-exporter、prometheus、grafana、alertmanager、webhook-dingtalk配置文件持久化。
5、 grafana无需手动添加datasource数据源,无需手动导入dashboard。同时也介绍了另外两个不错的模板,你也可以手动导入。
6、支持 支持磁盘、内存、cpu、网络、ssl证书、端口、http或https页面等告警通知。
7、支持 钉钉群告警通知。
8、支持部署、启动、停止、卸载、检测等操作。
注意事项:
1、node-exporter服务在 所有被监控的主机上部署。
2、blackbox-exporter、prometheus、grafana、alertmanager、webhook-dingtalk可以部署在同一台主机上,也可以分开部署。
三、工具下载
基于ARM64架构CPU使用docker-compose一键离线部署prometheus+grafana+alertmanager之监控告警系统工具
四、部署步骤
说明:这里就只演示,在一台主机上一键部署监控系统。
4.1、申请钉钉告警机器人
要想实现钉钉群告警通知,需要创建钉钉群,并申请钉钉告警机器人。你也可以参考钉钉开放平台官方文档进行操作。
4.2、执行部署操作
1、查看帮助命令
2、编辑变量文件
[root@host-monitor kube-monitor-tools]# cp env.conf.tpl env.conf
[root@host-monitor kube-monitor-tools]# vim env.conf
如下图所示:
# 建议填写为当前磁盘最大存储空间目录,如果系统盘空间最大,建议填写为/data,如果挂在盘空间最大,建议填写为挂载目录
export BASE_DIR="/data"
# node-exporter服务ip和宿主机映射端口,端口不冲突情况下,建议不朽噶
export NODE_EXPORTER_SERVER_HOST='192.168.1.149'
export NODE_EXPORTER_SERVER_PORT='9100'
# blackbox-exporter服务ip和宿主机映射端口,端口不冲突情况下,建议不朽噶
export BLACKBOX_EXPORTER_SERVER_HOST='192.168.1.149'
export BLACKBOX_EXPORTER_SERVER_PORT='9115'
# Prometheus服务ip和宿主机映射端口,端口不冲突情况下,建议不朽噶
export PROMETHEUS_SERVER_HOST='192.168.1.149'
export PROMETHEUS_SERVER_PORT='9090'
# Grafana服务ip和宿主机映射端口,端口不冲突情况下,建议不朽噶
export GRAFANA_SERVER_HOST='192.168.1.149'
export GRAFANA_SERVER_PORT='3000'
export GF_SECURITY_ADMIN_USER='test'
export GF_SECURITY_ADMIN_PASSWORD='test@123'
# Alertmanager服务ip和宿主机映射端口,端口不冲突情况下,建议不朽噶
export ALERTMANAGER_SERVER_HOST='192.168.1.149'
export ALERTMANAGER_SERVER_PORT='9093'
# Webhook-dingtalk服务ip和宿主机映射端口,端口不冲突情况下,建议不朽噶
export WEBHOOK_DINGTALK_SERVER_HOST='192.168.1.149'
export WEBHOOK_DINGTALK_SERVER_PORT='8060'
# webhook地址,使用Webhook地址,向钉钉群推送消息
# 获取可参考官方:https://open.dingtalk.com/document/robots/custom-robot-access
export WEBHOOK_URL='https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxx'
3、执行一键部署
[root@host-monitor kube-monitor-tools]# ./op.sh build allinone
或者
[root@host-monitor kube-monitor-tools]# ./op.sh build node-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh build blackbox-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh build prometheus
[root@host-monitor kube-monitor-tools]# ./op.sh build grafana
[root@host-monitor kube-monitor-tools]# ./op.sh build alertmanager
[root@host-monitor kube-monitor-tools]# ./op.sh build webhook-dingtalk
执行结果,如下图所示:
4.3、Prometheus添加监控目标
说明:如果是只适用于为某一个固定业务系统部署的监控,那么可以在变量文件中定义这些监控目标,但是考虑到要符合所有业务系统,这里并没有写死,而是提供更灵活性的配置。
1、根据上述部署结果,修改prometheus.yml配置文件,添加监控目标,这里 采用了基于文件形式的服务动态发现, 无需重启prometheus服务。,修改文件内容如下:
2、修改node-exporter.json文件
vim /data/pkgs/kube-monitor-tools/config/prometheus/conf.d/node-exporter/node-exporter.json
[
{
"targets": [
"192.168.1.149:9100"
]
},
{
"targets": [
"192.168.1.150:9100"
]
}
]
3、修改blackbox-exporter-http/blackbox-exporter.json文件
vim /data/pkgs/kube-monitor-tools/config/prometheus/conf.d/blackbox-exporter-http/blackbox-exporter.json
[
{
"targets": [
"https://www.baidu.com"
]
},
{
"targets": [
"https://www.aliyun.com"
]
},
{
"targets": [
"https://cloud.tencent.com"
]
}
]
4、修改blackbox-exporter-tcp/blackbox-exporter.json文件
vim /data/pkgs/kube-monitor-tools/config/prometheus/conf.d/blackbox-exporter-tcp/blackbox-exporter.json
[
{
"targets": [
"192.168.1.149:8000"
]
},
{
"targets": [
"192.168.1.150:8000"
]
}
]
5、修改blackbox-exporter-icmp/blackbox-exporter.json文件
vim /data/pkgs/kube-monitor-tools/config/prometheus/conf.d/blackbox-exporter-icmp/blackbox-exporter.json
[
{
"targets": [
"192.168.1.149"
]
},
{
"targets": [
"192.168.1.150"
]
}
]
4.4、登录Grafana管理平台
1、登录grafana管理平台,由于篇幅有限,这里只显示部分截图,如下图所示:
4.5、手动导入Dashboard(可选)
说明:如果你想要导入其它dashborad,请通过grafana官网下载。
4.5.1、node_exporter模板
1、这里介绍一个不错的模板,可以通过在线和离线两种方式导入模板。
2、监控效果如下图所示:
4.5.2、blackbox_exporter模板
1、这里介绍一个不错的模板,可以通过在线和离线两种方式导入模板。
2、监控效果如下图所示:
4.5、钉钉告警通知
1、钉钉告警效果如下图所示:
.
五、其它操作
5.1、启动
[root@host-monitor kube-monitor-tools]# ./op.sh start allinone
或者
[root@host-monitor kube-monitor-tools]# ./op.sh start node-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh start blackbox-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh start prometheus
[root@host-monitor kube-monitor-tools]# ./op.sh start grafana
[root@host-monitor kube-monitor-tools]# ./op.sh start alertmanager
[root@host-monitor kube-monitor-tools]# ./op.sh start webhook-dingtalk
执行结果,如下图所示:
5.2、停止
[root@host-monitor kube-monitor-tools]# ./op.sh stop allinone
或者
[root@host-monitor kube-monitor-tools]# ./op.sh stop node-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh stop blackbox-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh stop prometheus
[root@host-monitor kube-monitor-tools]# ./op.sh stop grafana
[root@host-monitor kube-monitor-tools]# ./op.sh stop alertmanager
[root@host-monitor kube-monitor-tools]# ./op.sh stop webhook-dingtalk
执行结果,如下图所示:
5.3、检查
[root@host-monitor kube-monitor-tools]# ./op.sh check allinone
或者
[root@host-monitor kube-monitor-tools]# ./op.sh check node-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh check blackbox-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh check prometheus
[root@host-monitor kube-monitor-tools]# ./op.sh check grafana
[root@host-monitor kube-monitor-tools]# ./op.sh check alertmanager
[root@host-monitor kube-monitor-tools]# ./op.sh check webhook-dingtalk
执行结果,如下图所示:
5.4、卸载
[root@host-monitor kube-monitor-tools]# ./op.sh clear allinone
或者
[root@host-monitor kube-monitor-tools]# ./op.sh clear node-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh clear blackbox-exporter
[root@host-monitor kube-monitor-tools]# ./op.sh clear prometheus
[root@host-monitor kube-monitor-tools]# ./op.sh clear grafana
[root@host-monitor kube-monitor-tools]# ./op.sh clear alertmanager
[root@host-monitor kube-monitor-tools]# ./op.sh clear webhook-dingtalk
执行结果,如下图所示:
总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》