优化的解决方案:yum搭建ELFK日志采集系统

优采云 发布时间: 2022-10-07 15:13

  优化的解决方案:yum搭建ELFK日志采集系统

  构建 ELFK 日志采集系统

  最近的工作涉及使用业界经过验证的ELFK解决方案构建一个日志采集系统,并在此处记录了施工过程。环境准备操作系统信息

  系统: 7.2

  三台服务器:10.211.55.11/12/13

  整个 ELFK 的部署体系结构关系图大致如下:

  首先,记录采集系统构建和安装弹性搜索集群

  如文章教您构建弹性搜索集群中所述,弹性搜索集群中有几种类型的节点:

  主节点:即 Master 节点。主节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康是非常重要的。默认情况下任何一个集群中的节点都有可能被选为主节点。索引数据和搜索查询等操作会占用大量的cpu,内存,io资源,为了确保一个集群的稳定,分离主节点和数据节点是一个比较好的选择。虽然主节点也可以协调节点,路由搜索和从客户端新增数据到数据节点,但最好不要使用这些专用的主节点。一个重要的原则是,尽可能做尽量少的工作。

数据节点:即 Data 节点。数据节点主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作等。数据节点对 CPU、内存、IO 要求较高,在优化的时候需要监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节点。

负载均衡节点:也称作 Client 节点,也称作客户端节点。当一个节点既不配置为主节点,也不配置为数据节点时,该节点只能处理路由请求,处理搜索,分发索引操作等,从本质上来说该客户节点表现为智能负载平衡器。独立的客户端节点在一个比较大的集群中是非常有用的,他协调主节点和数据节点,客户端节点加入集群可以得到集群的状态,根据集群的状态可以直接路由请求。

预处理节点:也称作 Ingest 节点,在索引数据之前可以先对数据做预处理操作,所有节点其实默认都是支持 Ingest 操作的,也可以专门将某个节点配置为 Ingest 节点。

以上就是节点几种类型,一个节点其实可以对应不同的类型,如一个节点可以同时成为主节点和数据节点和预处理节点,但如果一个节点既不是主节点也不是数据节点,那么它就是负载均衡节点。具体的类型可以通过具体的配置文件来设置。

  我部署的环境服务器较少,只有三个,因此部署在每个节点上的弹性搜索实例必须扮演主节点、数据和客户端的角色。

  在所有三台服务器上执行以下命令以关闭 selinux:

  setenforce 0

sed -i -e 's/^SELINUX=.*$/SELINUX=disabled/g' /etc/selinux/config

  在所有三台服务器上安装 java:

  yum install -y java

  在所有三台服务器上安装用于弹性搜索的 rpm 包:

  yum install -y https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm

  在三台服务器上修改弹性搜索的配置文件:

  cat /etc/elasticsearch/elasticsearch.yml

cluster.name: DemoESCluster

# 注意不同节点的node.name要设置得不一样

node.name: demo-es-node-1

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 0.0.0.0

http.port: 9200

discovery.zen.ping.unicast.hosts: ["10.211.55.11", "10.211.55.12", "10.211.55.13"]

discovery.zen.minimum_master_nodes: 2

gateway.recover_after_nodes: 2

EOF

  在三台服务器上启动弹性搜索:

  systemctl daemon-reload

systemctl enable elasticsearch

systemctl start elasticsearch

  检查任何服务器上的群集中的节点列表:

  

  yum install -y jq

curl --silent -XGET 'http://localhost:9200/_cluster/state?pretty'|jq '.nodes'

  在输出的

  以上命令,您可以看到集群的信息,节点字段收录每个节点的详细信息,以便部署基本的弹性搜索集群。

  安装奇巴纳

  接下来,我们需要安装一个 Kibana 来帮助直观地管理 Elasticsearch,在 host12 上安装 kibana:

  yum install -y https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-x86_64.rpm

  修改 kibana 的配置文件:

  cat /etc/kibana/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.url: "http://localhost:9200"

EOF

  请注意,这里配置的 elasticsearch.url 是原生 es 实例,所以实际上存在单点故障,官方建议是在本地部署一个 Elasticsearch 协调(仅协调节点)节点,该节点配置为协调节点的地址。

  启动基巴纳:

  systemctl daemon-reload

systemctl enable kibana

systemctl start kibana

  配置认证需要升级许可证,我在这里在内网使用,不做这个配置。如果需要配置访问身份验证,可以在此处参考。

  您还可以启用 SSL,可以通过参考此处进行配置。

  为了避免单点故障,kibana 可以部署多个,然后让 nginx 充当反向代理,以实现对 kibana 服务的负载平衡访问。安装日志

  安装日志:在每台服务器上

  yum install -y https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm

  修改日志的配置文件:

  cat /etc/logstash/logstash.yml

path.data: /var/lib/logstash

path.logs: /var/log/logstash

xpack.monitoring.enabled: true

xpack.monitoring.elasticsearch.url: ["http://10.211.55.11:9200", "http://10.211.55.12:9200", "http://10.211.55.13:9200"]

EOF

cat /etc/logstash/conf.d/beat-elasticsearch.conf

input {

beats {

port => 5044

ssl => false

}

}

filter {

}

output {

elasticsearch {

hosts => ["10.211.55.11:9200","10.211.55.12:9200","10.211.55.13:9200"]

index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

document_type => "%{[@metadata][type]}"

<p>

}

}

EOF

</p>

  为了从原创日志中解析一些有意义的字段字段,可以启用一些筛选器,可用筛选器的列表位于此处。

  启动日志:

  systemctl daemon-reload

systemctl enable logstash

systemctl start logstash

  安装文件节拍

  安装文件节拍:在每台服务器上

  yum install -y https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-x86_64.rpm

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.0-x86_64.rpm

sudo rpm -vi filebeat-7.5.0-x86_64.rpm

  修改每台服务器上的文件节拍配置文件:

  # 这里根据在采集的日志路径,编写合适的inputs规则

cat /etc/filebeat/filebeat.yml

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/log/*.log

filebeat.config.modules:

path: ${path.config}/modules.d/*.yml

reload.enabled: false

output.logstash:

hosts: ["10.211.55.11:5044", "10.211.55.12:5044", "10.211.55.13:5044"]

ssl.enabled: false

index: 'var_log'

EOF

  有许多 filebeat 配置文件选项,可以在此处找到完整的参考。

  启动文件节拍:在每台服务器上

  systemctl daemon-reload

systemctl enable filebeat

systemctl start filebeat

  其他安全设置

  为了确保数据安全,文件抖动和日志缓存,文件优化和弹性搜索,日志转储和弹性搜索,

  kibana和弹性搜索之间的通信和 kibana 本身可以启用 SSL 加密,具体启用方式就是在配置文件中匹配一个 SSL 证书,这个比较简单,不再赘述。

  Kibana 登录认证需要升级许可证,这更令人不快,如果考虑到成本,或者在前机nginx上用HTTP基本认证来处理。

  部署测试

  此时,一个更完整的ELFK日志采集系统设置好了,使用浏览器访问:5601/,在 kibana 界面中简单的设置就可以查看到抓取日志:

  图片-240706

  总结

  分布式日志采集,ELFK这个集比较成熟,部署也很方便,但是部署还是有点麻烦。幸运的是,还有一些自动部署的脚本:一个可跳的、一个可跳的、一个可的-角色-logstash、一个可识别的-角色-kibana,所以如果你必须经常部署这个集合,请使用这些可识别的脚本来形成一个自动化的部署工具集。

  解决方法:C#.NET实现网页自动登录的方法

  C#.NET实现网页自动登录的方法

  更新时间:2015-09-28 17:02:30 作者:青青飞扬

  本文文章主要介绍了C#.NET实现网页自动登录的方法,并以实例的形式分析了C#实现点击自动登录的相关技巧。具有一定的参考价值。有需要的朋友可以参考以下

  本文的例子介绍了C#.NET实现网页自动登录的方法。分享给大家,供大家参考。详情如下:

  用 C# 编写一个 Windows 窗体应用程序以自动登录到特定页面。

  下面以自动登录为例,说明如何模拟手动输入用户名和密码,点击登录实现自动登录。

  创建一个新的 C# 应用程序,为应用程序命名,例如 AutoLogin,向窗体添加一个 TextBox、Button 和 WebBrowser 控件,并为 WebBrowser 控件添加 webBrowser1_DocumentCompleted 事件。

  按钮的点击事件和webBrowser1_DocumentCompleted的代码如下:

  

private void btn_Add_Click(object sender, EventArgs e)

{

string sUrl = txb_Url.Text.Trim();

if (sUrl.Length > 0)

{

webBrowser1.Navigate(sUrl);

}

<p>

}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

HtmlElement ClickBtn = null;

if (e.Url.ToString().ToLower().IndexOf("login.aspx") > 0)

{

HtmlDocument doc = webBrowser1.Document;

for (int i = 0; i < doc.All.Count; i++)

{

if(doc.All[i].TagName.ToUpper().Equals("INPUT"))

{

switch(doc.All[i].Name)

{

case "txtUserName":

doc.All[i].InnerText = "xxxx@yy.com"; // 用户名

break;

  

case "txtPassword":

doc.All[i].InnerText = "zzzzzz"; // 密码

break;

case "btnSubmit":

ClickBtn = doc.All[i];

break;

}

}

}

ClickBtn.InvokeMember("Click"); // 点击“登录”按钮

}

}

</p>

  在TextBox中输入并点击按钮,即可实现页面的自动登录。

  我希望这篇文章对你的 C# 编程有所帮助。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线