Alertmanager告警利器
安装包下载
地址1:https://prometheus.io/download/
地址2:https://github.com/prometheus/alertmanager/releases
使用步骤:
部署Alertmanager
配置告警接收人
配置Prometheus与Alertmanager通信
在Prometheus中创建告警规则
部署Alertmanager (端口9093)
#解压安装tar -zxf alertmanager-0.21.0.linux-amd64.tar.gz mv alertmanager-0.21.0.linux-amd64 /opt/monitor/alertmanager#配置为系统管理服务vim /usr/lib/systemd/system/alertmanager.service [Unit]Description=alertmanager[Service]ExecStart=/opt/monitor/alertmanager/alertmanager --config.file=/opt/monitor/alert ...
Console服务发现
#基于文件的服务发现----------------------------------------------#启用基于文件的服务发现#以下都在服务端配置vim /opt/monitor/prometheus/prometheus.ymlscrape_configs: - job_name: 'test' basic_auth: username: prometheus password: 123.com file_sd_configs: - files: ['/opt/monitor/prometheus/sd_config/*.yml'] refresh_interval: 5s # 每隔5秒检查一次---------------------------------------------------#配置完成后,使用promtool工具检查配置文件是否有误cd /opt/monitor/prometheus./promtool check config ./prome ...
标签管理
标签作用:Prometheus中存储的数据为时间序列,是由Metric的名字和一系列的标签(键值对)唯一标识的, 不同的标签代表不同的时间序列,即通过指定标签查询指定数据。
Metadata标签
在Prometheus所有的Target实例中,都包含一些默认的Metadata标签信息。可以通过Prometheus UI的 Targets页面中查看这些实例的Metadata标签的内容:
• address:当前Target实例的访问地址:
• scheme:采集目标服务访问地址的HTTP Scheme,HTTP或者HTTPS
• metrics_path:采集目标服务访问地址的访问路径
上面这些标签将会告诉Prometheus如何从该Target实例中获取监控数据。除了这些默认的标签以外,我们 还可以为Target添加自定义的标签。
自定义标签
- job_name: 'linux' basic_auth: username: prometheus password: 123.com static_configs: - ...
监控docker主机
监控docker主机(暴露指标端口8080)#服务端配置#在Prometheus配置文件添加被监控端vim /opt/monitor/prometheus/prometheus.ymlscrape_configs: - job_name: 'docker' static_configs: - targets: ['192.168.1.13:8080','192.168.1.11:8080']---------------------------------------------------------#配置完成后,使用promtool工具检查配置文件是否有误cd /opt/monitor/prometheus./promtool check config ./prometheus.yml #查看prometheus的进程id,上面修改配置进行热加载配置ps -ef |grep prometheuskill -HUP 62291
#docker主机配置(被监控端)#配置docker加速源在 /etc/doc ...
监控MySQL服务器
#监控mysql数据库主机----------------------------------------------------- #服务端配置#在Prometheus配置文件添加被监控端vim /opt/monitor/prometheus/prometheus.ymlscrape_configs: - job_name: 'dbserver' static_configs: - targets: ['192.168.1.11:9104']---------------------------------------------------#配置完成后,使用promtool工具检查配置文件是否有误cd /opt/monitor/prometheus./promtool check config ./prometheus.yml #查看prometheus的进程id,上面修改配置进行热加载配置ps -ef |grep prometheuskill -HUP 62291
#MySQL服务器(被监控端 端口9104)mysql_exp ...
监控linux主机
一、Linux 时间同步1、时间同步一次:ntpdate ntp1.aliyun.com2、定时任务同步(1)crontab -e(2)按i 写入*/10 * * * * ntpdate ntp1.aliyun.com说明放入定时任务中每隔10分钟执行一次crontab -l 查看定时任务
#监控Linux主机系统指标#服务端配置#安装prometheus(端口9000)tar -zxf prometheus-2.22.0.linux-amd64.tar.gz #创建工作目录mkdir /opt/monitormv prometheus-2.22.0.linux-amd64 /opt/monitor/prometheus#配置为系统服务管理vi /usr/lib/systemd/system/prometheus.service[Unit] Description=prometheus[Service] ExecStart=/opt/monitor/prometheus/prometheus --config.file=/opt/monitor/prometheus/prometheu ...
ELK 系统架构优化
增加数据缓冲队列
使用Redis作为消息队列,起到数据缓冲作用,也就是峰值处理能力。
filebeat相当于提供者,logstash相当于消费者。
当filebeat采集到日志,会把日志推送到redis中,redis就有数据了,紧接着logstash从redis拿到数据,经过处理推送到es,es通过kibana把日志展现出来。
1.找任意一台机器安装redis
#安装redisyum -y install epel-releaseyum -y install redis#修改配置文件vim /etc/redis.conf bind 0.0.0.0 requirepass 123456#重启服务systemctl restart redis.service# 检查redis是否有数据redis-cli -a 123456127.0.0.1:6379> keys *(empty list or set)
2、filebeat配置输出到redis
vim /etc/filebeat/filebeat.yml
filebeat.inputs:- type: log enabled: ...
收集Kubernetes日志
收集Kubernetes日志
容器特性给日志采集带来的难度:
• K8s弹性伸缩性:导致不能预先确定采集的目标
• 容器隔离性:容器的文件系统与宿主机是隔离,导致 日志采集器读取日志文件受阻
应用程序日志记录体现方式分为两类:
• 标准输出:输出到控制台,使用kubectl logs可以看到
• 日志文件:写到容器的文件系统的文件
针对标准输出:以DaemonSet方式在每个Node 上部署一个日志收集程序,采集 /var/lib/docker/containers/目录下所有容器日志。
docker容器本地日志文件:/var/lib/docker/containers//-json.log
通过将/var/lib/docker/containers//-json.log 挂载到日志采集器中(pod),这样就可以采集到所有容器的日志了。
kubectl log标准输出流程:
kubectl log -> apiserver -> kubelet ->docker ->*-json.log
kubectl log请求apiserver,apiserver访问ku ...
Kibana 部署
Kibana 部署
Kibana 是一个图形页面系统,用于对 Elasticsearch 数据可视化。
二进制方式部署:
tar -zxvf kibana-7.9.3-linux-x86_64.tar.gz mv kibana-7.9.3-linux-x86_64 /opt/elk/kibana
修改配置文件
vim /opt/elk/kibana/config/kibana.yml
server.port: 5601 server.host: "0.0.0.0"elasticsearch.hosts: ["http://192.168.0.11:9200"]i18n.locale: "zh-CN"
配置系统服务管理:
vim /usr/lib/systemd/system/kibana.service
[Unit]Description=kibana[Service]ExecStart=/opt/elk/kibana/bin/kibana --allow-rootExecReload=/bin/kill -HU ...
收集Nginx访问日志
收集Nginx访问日志
安装nginx
vim /etc/yum.repos.d/nginx.repo [nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1
yum -y install nginxsystemctl start nginx
filebeat配置
vim /etc/filebeat/filebeat.yml
filebeat.inputs:- type: log enabled: true paths: - /var/log/nginx/access.log tags: ["nginx"] fields_under_root: true fields: project: microservice app: nginxoutput.logstash: hosts: ["192.168.0.11:5044"]
重启服务
systemctl restart filebeat ...