elk编译环境
‘壹’ elk不出索引,重启服务器就好了,这是为什么
可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。
DROP INDEX index_name ON talbe_name
ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY
其中,前两条语句是等价的,删除掉table_name中的索引index_name。
‘贰’ 如何用elk工具手机服务器异常信息
分布式采集分析可以减轻服务器压力,对于大型机房每天海量的日志信息来说分布式部署可以更高效的对日志进行采集分析,你网络一下 《logsys日志管理系统》,这是一款的日志管理工具,安装简单,下一步下一步就行了。可以装一个虚拟机试试。注意装的时候可选择集中部署和分布式部署!
‘叁’ linux下安装了elk怎么卸载
使用make install安装的话可以手工删除,如果编译脚本中带卸载参数的话可以make uninstall
‘肆’ 有熟悉elk 日志系统的吗
2.1 日志的采集
灵活性是我们选择日志采集方案更看重的因素,所以logstash属于首先方案, 它可以兼顾多种不同系统和应用类型等因素的差异,从源头上进行一些初步的日志预处理。
logstash唯一的小缺憾是它的不轻便, 因为它是使用jruby开发并跑在java虚拟机上的agent, 当然啦,同时也是优点,即各种平台上都可以用。
2.2 日志的汇总与过滤
kafka在我们挖财已经属于核心的中间件服务, 所以, 日志的汇总自然而然会倾向于使用kafka。
日志的过滤和处理因为需求的多样性,可以直接对接订阅kafka, 然后根据各自的需求进行日志的定制处理, 比如过滤和监控应用日志的异常,即使通过zabbix进行预警; 或者数据仓库方面在原始日志的基础上进行清洗和转换,然后加载到新的数据源中;
2.3 日志的存储
原始的日志存储我们采用ElasticSearch, 即ELK技术栈中E的原本用途,遵循ELK技术栈中各个方案之间的通用规范, 比如日志如索引采用logstash与kibana之间约定的index pattern。
日志的衍生数据则日志使用各方根据需求自行选择。
2.4 日志的分析与查询
ELK技术栈中的Kibana已经可以很好的满足这一需求,这里我们不折腾。
3 需要解决哪些技术问题?
因为我们在ELK技术栈的处理链路上插入了一些扩展点,所以,有些问题需要解决和澄清...
3.1 logstash与kafka的对接
ELK技术栈中, Logstash和Elastic Search是通过logstash的elasticsearch或者elasticsearch_http这几个output直接对接的, 为了让logstash转而对接kafka,我们有几种选择:
logstash-kafka
logstash-output-kafka
logstash的httpoutput
第一种和第二种方案都需要编译打包相应的依赖到logstash,然后随同logstash一起部署到服务结点, 虽然可以work, 但依赖重, 资源消耗多, 通用性不强;
个人更倾向于第三种方案,即使用logstash默认提供的http这个output, 因为http比较通用, 而且本身我们的kafka前面就有为了多系统对接而提供的http proxy方案部署。另外,依赖的管理和升级都在服务端维护,对每个服务结点是透明的。 当然, 唯一的弱点是效率可能不如基于长连接的消息传递高,只是暂时不是问题,即使将来成为瓶颈,也可以通过sharding的形式进行扩展。
3.2 kafka到elastic search的数据链路对接
kafka和es之间我们要加入一套日志过滤与处理系统, 这套系统是我们发挥整个体系最大威力的地方。 在整个系统的处理pipeline中,我们可以根据需求添加任意需要的Filter/Processor, 比如服务于应用报警的Filter/Processor,服务于数据仓库ETL的Filter/Processor等等。 但不管前面做了多少事情, 日志最终是要接入到ES进行存储的。
因为ELK技术栈中三者的对接遵循一些规范或者说规则, 而我们又需要继续复用这个技术栈中的服务提供的特定功能, 所以,即使是我们在整个处理链路中插入了扩展点,但数据的存储依然需要遵循ELK原来的规范和规则, 以便Kibana可以从ES中捞日志出来分析和展示的时候不需要任何改动。
logstash存入ES的日志,一般遵循如下的index pattern:
logstash-%{+YYYY.MM.dd}
使用日期进行索引(index)界定的好处是, 可以按照日期范围定期进行清理。
NOTE
进一步深入说明一下, 针对不同的日志类别, index pattern也最好分类对应。
更多信息:
Each log line from the input file is associated with a logstash event. Each logstash event has fields associated with it. By default, "message", "@timestamp", "@version", "host", "path" are created. The "message" field, referenced in the conditional statement, contains all the original text of the log line.
日志处理系统可以使用ES的java客户端或者直接通过ES的HTTP服务进行采集到的日志索引操作。
‘伍’ winodws环境下安装elk为什么不能用service命令
:删除的办法有两个:办法一: 用sc.exe这个Windows命令开始——运行——cmd.exe,然后输入sc就可以看到了。使用办法很简单:sc delete "服务名" (如果服务名中间有空格,就需要前后加引号)
‘陆’ 如何通过elk检索出错误日志并实时报警
1、假设已经安装了MinGW,安装目录:C:/MinGW,将C:/MinGW/bin添加到系统环境变量中。如果闲下载安装MinGW麻烦,可以直接下载一个Dev-CPP或许Code::Blocks开发环境,这两个IDE中都是自带MinGW的。
2、下载eclipse-cpp-helios-SR2-win32.zip
3、安装opencv,假设安装目录为:C:/OpenCV
4、解压eclipse-cpp-helios-SR2-win32.zip,启动eclipse.exe
新建C++项目->可执行程序->Hello World C++ Project
5、添加头文件和库文件
右键项目选择“属性”->C/C++ Build->Settings。
Tool Settings 标签页,GCC C++ Compiler->Includes中添加OpenCV的头文件目录,MinGW C++ Linker->Libraries中添加OpenCV的库文件目录以及相应的库文件名称(注意:这里的库文件不加后缀名)
‘柒’ elk 的jdk路径可以设置吗
看看是不是环境变量没设置正确.在下载了jdk后须设置环境变量才可以使用.首先在”我的电脑”点右键,选择”属性”,再选择”高级”选项,点”环境变量”,在系统变量中找到classpath变量,点”编辑”,在原来的内容后面先写个分号,再写个小数点,再写个分号,然后再把你安装的bin文件的路径写上去,如C:\ProgramFiles\Java\jdk1.6.0_10\bin这样就把classpath变量设置好了.下一步再找到path变量,点”编辑”,也是在原内容后面写上分号点分号,然后把你安装的tools.jar文件的路径写上去,如C:\ProgramFiles\Java\jdk1.6.0_10\lib\tools.jar这样就把path变量也设置好了,下一步是设置JAVA_HOME变量,这个变量原来没有,所以得点”新建”,在值中写入你安装的jdk的路径,如C:\ProgramFiles\Java\jdk1.6.0_10这样就把环境变量设置好了,可以编译你的java文件了.
‘捌’ elk 如何创建新的索引
创建kibana索引
若只需要收集显示nginx的访问日志,则可以建立一个名为nginx+时间的索引
若是需要收集一个服务器下的多个服务日志,则可以在一个conf下添加多个input并根据type来区分和实现
环境
192.168.2.112 ES/kibana
192.168.2.118 logstash/nginx
192.168.2.117 logstash/mysql/nginx
建立nginx索引
- input {
- file {
- path => "/usr/local/nginx/logs/access.log"
- type => "nginx"
- }
- }
- output {
- elasticsearch {
- hosts => "192.168.2.112:9200"
- index => "nginx-%{+YYYY.MM.dd}"
- }
- }12345678910111213
- [root@localhost etc]# pwd/usr/local/logstash/etc
- [root@localhost etc]# ../bin/logstash -f nginxlog.conf1234
收集nginx日志和mysql日志
- scp -r logstash/* [email protected]:/usr/local/logstash1
- input {
- file {
- path => "/usr/local/nginx/logs/access.log"
- type => "nginx"
- }
- }
- input {
- file {
- path => "/var/log/mysqld.log"
- type => "mysql"
- }
- }
- output { if [type] == "nginx"{
- elasticsearch {
- hosts => "192.168.2.112:9200"
- index => "nginx-%{+YYYY.MM.dd}"
- }
- }if [type] == "mysql"{
- elasticsearch {
- hosts => "192.168.2.112:9200"
- index => "mysql-%{+YYYY.MM.dd}"
- }
- }
- }
- [root@host107 etc]# pwd/usr/local/logstash/etc
- [root@host107 etc]# ../bin/logstash -f all.conf1234
1)在118服的logstash/etc目录下建立的nginxlog.conf,添加
其中,index即代表对应的索引名称
2)然后启动logstash
3)登陆kibana设置索引
4)然后手动访问nginx页面后,可以在kibana的discover界面看到
1)把118服的logstash目录复制到117服对应目录下
2)在117服logstash/etc目录下建立all.conf
3)在kibana页面建立mysql索引
4)启动logstash
5)然后启动及关闭mysql服务,就可以看到日志数据
6)同样的,访问nginx页面后,也会收到nginx日志数据
备注:
1)其中上面的host列显示0.0.0.0,是因为没有设置主机名,在/etc/hosts下加上
127.0.0.1 hostmysqlnginx
然后hostname hostmysqlnginx
重启下logstash,就可以看到host