monitor日志排查思路

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

monitor日志排查思路

1 排查思路

monitor日志收集展示依赖于elasticsearch(es)、logstash、kafka服务。苍穹日志收集链路为:苍穹服务 --> kafka --> logstash --> elasticsearch --> monitor

 

首先对常见的错误进行排查:

1.1  检查kafka、logstash、es服务是否正常运行

以下为服务正常运行截图:

systemctl status kafka
netstat -nalp|grep 9092|grep -i listen


若状态为inactive,重启kafka。

systemctl restart kafka



systemctl status logstash
netstat -nalp|grep 9600|grep -i listen


若状态为inactive,重启logstash。

systemctl restart logstash



systemctl status es
netstat -nalp|grep 9200|grep -i listen


若状态为inactive,重启es。

systemctl restart es


1.2  检查elk服务安装目录的磁盘占用

检查磁盘占用是否超过85%(超过85%,es进入只读状态无法写入日志)。

df -h



(1) 若超过了85%,先查看是否是es数据占用了太多磁盘空间(esdata目录),若是,可以

选择给磁盘扩容(磁盘空间较小)或者手动删除es日志索引,若是其他大文件占用的磁盘

空间,自行判断进行清理或者扩容。


查看esdata目录大小。

du -sh esdata



查看索引。

curl http://127.0.0.1:9200/_cat/indices -uelastic:Cosmic@2020



删除对应日期的es索引数据,比如*2021-04*会匹配到21年4月份的日志,*2021-04-22*可以匹配到4月22日的日志,根据以下命令进行修改,若需要删除全部日志,清空esdata下内容并重启es。

curl -X DELETE http://127.0.0.1:9200/*2021-04* -u elastic:Cosmic@2020

 

(2) 针对以上es数据大的问题。


① 检查是否设置了定时清理任务。



若没有设置,使用crontab -uelsearch -e 设置定时任务。

crontab -uelsearch -e
0 1 * * *  sh /home/elsearch/autoclear.sh

 

② 检查/home/elsearch/autoclear.sh文件中指定的账号密码是否有误。



可以使用以下命令重置账号密码(其中elastic处填写账号,Cosmic@2020为密码):

curl -u kdadmin:Kdes_2019 -XPUT 'http://127.0.0.1:9200/_xpack/security/user/'elastic'/_password?pretty' -H 'Content-Type: application/json' -d '{ "password" : "'Cosmic@2020'" }'

 

(3) 磁盘超过85%,清理空间之后需要使用命令解除索引只读状态。

curl -XPUT -H "Content-Type: application/json" http://127.0.0.1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}' -uelastic:Cosmic@2020


(4) 以上操作后,仍无法显示日志,重启下服务。

systemctl restart es logstash kafka

1.3 检查日志有没有输出到kafka和es

(1) 检查日志有没有输出到kafka。


① 切换到kafka的bin目录下,执行以下命令查看是否有topic产生,有”集群编码-log”的topic才是正常的。

./kafka-topics.sh --list --zookeeper zookeeperip:2181


例:

./kafka-topics.sh --list --zookeeper 10.203.12.8:2181


 

② 执行以下命令查看日志是否输出到kafka。                                

./kafka-console-consumer.sh --bootstrap-server kafkaip:9092 --from-beginning --topic [TopicName]


例:

./kafka-console-consumer.sh --bootstrap-server 10.203.12.20:9092 --from-beginning --topic
ierp-log

若有输出类似以下结果,说明日志已经输出到kafka。


 

③ 若日志没有输出到kafka,检查MC中的配置。

检查MC群管理配置信息中kafka的ip和端口是否配置有误。



检查公共配置项log.config中,日志输出到kafka的配置:



注意事项:修改完正确配置后,若还没有日志,需重启苍穹服务mservice

 

(2) 检查日志有没有输出到es。


① 用以下命令查看索引。

curl 127.0.0.1:9200/_cat/indices -uelastic:Cosmic@2020



上面说明正常输出到es,这时候一般monitor可查看到日志了。

 

② 若通过上述命令没有查到ierp-log-*这样的记录(ierp对应集群编码),说明没有输出到es,需检查logstash配置文件javalog.conf, ,检查topics、ip和es用户密码有没有配置正确,topics值前面部分对应集群编码,修改配置正确之后,重启logstash服务,再执行步骤①。


2 常见报错

切换经典版查看,http://ip:port/monitor/

登录之后将url修改为http://ip:port/monitor/?version=old

2.1 elasticsearch服务未正常启动

2.2 mc集群配置中elasticsearch的用户密码不正确



MC集群管理中es用户密码配置项如下:



注意事项:修改es用户名密码后,除了集群发布还需要重启苍穹服务

2.3 kafka或logstash服务未正常启动

3 自动清理脚本优化

es索引清理脚本/home/elsearch/autoclear.sh配置了linux定时任务定时执行。可通过crontab -uelsearch -l 查看。


旧的清理脚本只会清理几天前的当天的日志,不会清理之前的日志,新的脚本会将7天以前的所有日志都清理,es_user,es_password对应es的用户和密码,修改“7 days ago” 可以修改日志保留时间,比如修改为”5 days ago”。

 
#!/bin/bash
es_user=elastic
es_password="Kingdee@2020"
retain_time=`date +%Y%m%d -d "7 days ago"`
function delete_indices() {
time_num=`echo $1|sed 's/-//g'`
if [ ${time_num} -lt ${retain_time} ];then
curl -X DELETE http://127.0.0.1:9200/*$1* -u ${es_user}:${es_password} >>/dev/null 2>&1
fi
}
curl -XGET http://127.0.0.1:9200/_cat/indices -u ${es_user}:${es_password} |awk '{print $3}' |grep '[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}'|awk '{print substr($0,length($0)-9)}'|sort -n|uniq|while read line; do delete_indices $line; done



monitor日志排查思路

1 排查思路monitor日志收集展示依赖于elasticsearch(es)、logstash、kafka服务。苍穹日志收集链路为:苍穹服务 --> kafka --> logstas...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息