ELK 架構之 Logstash 和 Filebeat 安裝配置

来源:https://www.cnblogs.com/xishuai/archive/2018/05/16/elk-logstash-filebeat.html
-Advertisement-
Play Games

上一篇: "ELK 架構之 Elasticsearch 和 Kibana 安裝配置" 閱讀目錄: 1. 環境準備 2. 安裝 Logstash 3. 配置 Logstash 4. Logstash 採集的日誌數據,在 Kibana 中顯示 5. 安裝配置 Filebeat 6. Filebeat 採 ...


上一篇:ELK 架構之 Elasticsearch 和 Kibana 安裝配置

閱讀目錄:

  • 1. 環境準備
  • 2. 安裝 Logstash
  • 3. 配置 Logstash
  • 4. Logstash 採集的日誌數據,在 Kibana 中顯示
  • 5. 安裝配置 Filebeat
  • 6. Filebeat 採集的日誌數據,在 Kibana 中顯示
  • 7. Filebeat 採集日誌數據,Logstash 過濾
  • 8. Filebeat 採集的日誌數據,Logstash 過濾後,在 Kibana 中顯示

上一篇主要說的是 Elasticsearch 和 Kibana 安裝配置,以及服務追蹤數據的處理和展示,日誌數據採集使用的 Spring Cloud Sleuth Zipkin + Stream/RabbitMQ 中間件(Service 端配置),然後 Zipkin Server 從隊列中獲取日誌數據,再使用 HTTP 的請求的方式,傳輸並存儲到 Elasticsearch 中,最後 Kibana 進行日誌數據展示。

在 ELK Stack 中,日誌數據採集有單獨的工具,就是 Logstash 和 Beats。

  • Logstash 主要是用來日誌的搜集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式為 c/s 架構,client 端安裝在需要收集日誌的主機上,server 端負責將收到的各節點日誌進行過濾、修改等操作在一併發往 Elasticsearch 上去。
  • Beats 在這裡是一個輕量級日誌採集器,其實 Beats 家族有 6 個成員,早期的 ELK 架構中使用 Logstash 收集、解析日誌,但是 Logstash 對記憶體、cpu、io 等資源消耗比較高。相比 Logstash,Beats 所占系統的 CPU 和記憶體幾乎可以忽略不計。

目前 Beats 包含六種工具:

  • Packetbeat: 網路數據(收集網路流量數據)
  • Metricbeat: 指標(收集系統、進程和文件系統級別的 CPU 和記憶體使用情況等數據)
  • Filebeat: 日誌文件(收集文件數據)
  • Winlogbeat: windows 事件日誌(收集 Windows 事件日誌數據)
  • Auditbeat:審計數據(收集審計日誌)
  • Heartbeat:運行時間監控(收集系統運行時的數據)

本篇文章目的:

  • 1. Logstash 日誌數據採集,Elasticsearch 存儲,Kibana 展示
  • 2. Filebeat 日誌數據採集,Elasticsearch 存儲,Kibana 展示
  • 3. Filebeat 日誌數據採集,Logstash 過濾,Elasticsearch 存儲,Kibana 展示

第三種方案的實現架構圖:

1. 環境準備

伺服器環境:Centos 7.0(單機版)

Elasticsearch 和 Logstash 需要 Java,Elasticsearch 推薦的版本為 Java 8,安裝教程:確定穩定的 Spring Cloud 相關環境版本

另外,我們需要修改下伺服器主機信息:

[root@node1 ~]# vi /etc/hostname
node1

[root@node1 ~]# vi /etc/hosts
192.168.0.11 node1
127.0.0.1   node1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         node1 localhost localhost.localdomain localhost6 localhost6.localdomain6

2. 安裝 Logstash

運行以下命令將 Elasticsearch 公共 GPG 密鑰導入 rpm:

[root@node1 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

/etc/yum.repos.d/目錄中,創建一個名為logstash.repo的文件,添加下麵配置:

[logstash-5.x]
name=Logstash repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

然後安裝 Logstash:

[root@node1 ~]# yum makecache && yum install logstash -y
已載入插件:fastestmirror
base                                                                          | 3.6 kB  00:00:00
elasticsearch-5.x                                                             | 1.3 kB  00:00:00
extras                                                                        | 3.4 kB  00:00:00
kibana-5.x                                                                    | 1.3 kB  00:00:00
logstash-5.x                                                                  | 1.3 kB  00:00:00
rabbitmq-erlang                                                               | 1.3 kB  00:00:00
updates                                                                       | 3.4 kB  00:00:00
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
元數據緩存已建立
已載入插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.163.com
正在解決依賴關係
--> 正在檢查事務
---> 軟體包 logstash.noarch.1.5.6.9-1 將被 安裝
--> 解決依賴關係完成

依賴關係解決

=====================================================================================================
 Package              架構               版本                    源                             大小
=====================================================================================================
正在安裝:
 logstash             noarch             1:5.6.9-1               elasticsearch-5.x              98 M

事務概要
=====================================================================================================
安裝  1 軟體包

總下載量:98 M
安裝大小:188 M
Downloading packages:
logstash-5.6.9.rpm                                                            |  98 MB  00:06:38
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安裝    : 1:logstash-5.6.9-1.noarch                                                        1/1
Using provided startup.options file: /etc/logstash/startup.options
/usr/share/logstash/vendor/jruby/bin/jruby:行388: /usr/bin/java: 沒有那個文件或目錄
Unable to install system startup script for Logstash.
  驗證中      : 1:logstash-5.6.9-1.noarch                                                        1/1

已安裝:
  logstash.noarch 1:5.6.9-1

完畢!

安裝報錯,具體問題:/usr/share/logstash/vendor/jruby/bin/jruby:行388: /usr/bin/java: 沒有那個文件或目錄

解決方案:安裝 Logstash 提示 /usr/bin/java: No such file or directory

對 Java 配置軟鏈接,鏈接到/usr/bin/java

[root@node1 ~]# ln -s /usr/local/java/bin/java /usr/bin/java

然後卸載 Logstash:

[root@node1 ~]# yum -y remove logstash

重新安裝:

[root@node1 ~]# yum makecache && yum install logstash -y

設置開機啟動,以及啟動系統服務:

[root@node1 ~]# sudo /bin/systemctl daemon-reload
[root@node1 ~]# sudo /bin/systemctl enable logstash.service

先不急啟動 Logstash,需要先配置下 Logstash。

3. 配置 Logstash

採集日誌數據,需要有個數據源,這裡我們使用 rsyslog 進行測試。

Linux 日誌機制的核心是 rsyslog 守護進程,該服務負責監聽 Linux下 的日誌信息,並把日誌信息追加到對應的日誌文件中,一般在 /var/log 目錄下。 它還可以把日誌信息通過網路協議發送到另一臺 Linux 伺服器上,或者將日誌存儲在 MySQL 或 Oracle 等資料庫中。

修改 rsyslog 配置:

[root@node1 ~]# vi /etc/rsyslog.conf
# remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional
*.* @@192.168.1.40:10514

重啟 rsyslog:

[root@node1 ~]# systemctl restart rsyslog

增加配置文件:

[root@node1 ~]# vi /etc/logstash/conf.d/syslog.conf
input {
  syslog {
    type => "system-syslog"
    port => 10514
  }
}
output {
  elasticsearch {
    hosts => ["node1:9200"]  # 定義es伺服器的ip
    index => "system-syslog-%{+YYYY.MM}" # 定義索引
  }
}

驗證配置文件,是否有效:

[root@node1 ~]# cd /usr/share/logstash/bin
[root@node1 bin]# ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit
Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
Configuration OK

啟動 Logstash:

[root@node1 ~]# systemctl start logstash

查看啟動日誌:

[root@node1 ~]# cat /var/log/logstash/logstash-plain.log
[2018-05-15T08:19:05,578][FATAL][logstash.runner          ] An unexpected error occurred! {:error=>#<ArgumentError: Path "/var/lib/logstash/queue" must be a writable directory. It is not writable.>, :backtrace=>["/usr/share/logstash/logstash-core/lib/logstash/settings.rb:439:in `validate'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:222:in `validate_value'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:138:in `validate_all'", "org/jruby/RubyHash.java:1342:in `each'", "/usr/share/logstash/logstash-core/lib/logstash/settings.rb:137:in `validate_all'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:243:in `execute'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:67:in `run'", "/usr/share/logstash/logstash-core/lib/logstash/runner.rb:204:in `run'", "/usr/share/logstash/vendor/bundle/jruby/1.9/gems/clamp-0.6.5/lib/clamp/command.rb:132:in `run'", "/usr/share/logstash/lib/bootstrap/environment.rb:71:in `(root)'"]}

具體錯誤:Path "/var/lib/logstash/queue" must be a writable directory. It is not writable

解決方案:http://www.cnblogs.com/szk5043/articles/8652677.html

執行命令:

[root@node1 ~]# chown -R logstash /var/log/logstash /var/lib/logstash

重新啟動 Logstash:

[root@node1 ~]# systemctl restart logstash

查看 Logstash 啟動狀態:

[root@node1 ~]# systemctl status logstash
logstash.service - logstash
   Loaded: loaded (/etc/systemd/system/logstash.service; enabled)
   Active: active (running) since 二 2018-05-15 08:23:37 CEST; 1min 4s ago
 Main PID: 10855 (java)
   CGroup: /system.slice/logstash.service
           └─10855 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupan...

5月 15 08:23:37 node1 systemd[1]: Starting logstash...
5月 15 08:23:37 node1 systemd[1]: Started logstash.
5月 15 08:23:46 node1 logstash[10855]: Sending Logstash's logs to /var/log/logstash which is ...ties
Hint: Some lines were ellipsized, use -l to show in full.

查看埠監聽(是否正常):

[root@node1 ~]# netstat -lntp |grep 9600
tcp6       0      0 127.0.0.1:9600          :::*                    LISTEN      10855/java
[root@node1 ~]# netstat -lntp |grep 10514
tcp6       0      0 :::10514                :::*                    LISTEN      10855/java

Logstash 的監聽 IP 是127.0.0.1這個本地 IP,本地 IP 無法遠程通信,所以需要修改一下配置文件,配置一下監聽的 IP(需要設置 IP 地址,不能設置 Hostname):

[root@node1 ~]# vi /etc/logstash/logstash.yml
http.host: "192.168.1.40"

重新啟動 Logstash:

[root@node1 ~]# systemctl restart logstash

查看埠監聽(是否正常):

[root@node1 ~]# netstat -lntp |grep 9600
tcp6       0      0 192.168.1.40:9600       :::*                    LISTEN      11214/java

4. Logstash 採集的日誌數據,在 Kibana 中顯示

查看 Elasticsearch 索引列表,可以看到生成了system-syslog-*類型的日誌數據:

[root@node1 ~]# curl http://node1:9200/_cat/indices?v
health status index                  uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   twitter                k1KnzWyYRDeckjt7GASh8w   5   1          1            0      5.2kb          5.2kb
yellow open   .kibana                8zJGQkq8TwC4s3JJLMX44g   1   1          5            0     27.1kb         27.1kb
yellow open   system-syslog-2018.05  0aKfJeOmTZ6yen9eSlCOig   5   1         32            0    201.9kb        201.9kb
yellow open   zipkin:span-2018-05-15 8vnm9SJvSlK-cAtakK8VeQ   3   1          9            0     47.3kb         47.3kb
yellow open   zipkin:span-2018-05-14 TZ-MmJpoSs-NwjHjxEvhFQ   3   1        219            0    127.1kb        127.1kb
yellow open   student                iZPqPcwrQbifGOfE9DQYvg   5   1          0            0       955b           955b

然後在 Kibana 上面創建system-syslog-*索引:

創建好之後,就可以看到整個日誌數據了:

其實這裡顯示的日誌數據就是/var/log/messages文件里的數據,因為 Logstash 里配置的就是收集messages文件里的數據。

以上這就是如何使用 Logstash 收集系統日誌,輸出到 Elasticsearch 伺服器上,併在 Kibana 的頁面上進行查看。

5. 安裝配置 Filebeat

運行以下命令將 Elasticsearch 公共 GPG 密鑰導入 rpm:

[root@node1 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

/etc/yum.repos.d/目錄中,創建一個名為elastic.repo的文件,添加下麵配置:

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安裝 Filebeat:

[root@node1 ~]# yum makecache && yum install filebeat -y

設置開機啟動,以及啟動系統服務:

[root@node1 ~]# sudo /bin/systemctl daemon-reload
[root@node1 ~]# sudo /bin/systemctl enable filebeat.service

編輯配置文件:

[root@node1 ~]# vi /etc/filebeat/filebeat.yml
filebeat.prospectors:
- type: log
   paths:
      - /var/log/messages  # 指定需要收集的日誌文件的路徑

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["node:9200"]  # 配置 Elasticsearch 伺服器的 IP 地址

啟動 Filebeat 服務:

[root@node1 ~]# systemctl start filebeat

查看 Filebeat 服務狀態:

[root@node1 ~]# systemctl status filebeat
filebeat.service - filebeat
   Loaded: loaded (/usr/lib/systemd/system/filebeat.service; enabled)
   Active: active (running) since 二 2018-05-15 09:29:44 CEST; 1min 12s ago
     Docs: https://www.elastic.co/guide/en/beats/filebeat/current/index.html
 Main PID: 12332 (filebeat)
   CGroup: /system.slice/filebeat.service
           └─12332 /usr/share/filebeat/bin/filebeat -c /etc/filebeat/filebeat.yml -path.home /usr/...

5月 15 09:29:44 node1 systemd[1]: Started filebeat.

6. Filebeat 採集的日誌數據,在 Kibana 中顯示

查看 Elasticsearch 索引列表,可以看到生成了filebeat-*類型的日誌數據:

[root@node1 ~]# curl http://node1:9200/_cat/indices?v
health status index                  uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   twitter                k1KnzWyYRDeckjt7GASh8w   5   1          1            0      5.2kb          5.2kb
yellow open   .kibana                8zJGQkq8TwC4s3JJLMX44g   1   1          6            0     33.3kb         33.3kb
yellow open   system-syslog-2018.05  0aKfJeOmTZ6yen9eSlCOig   5   1        689            0    652.3kb        652.3kb
yellow open   filebeat-2018.05.15    K852lKlgSaKG6-hE_GNB4w   5   1      27417            0      6.7mb          6.7mb
yellow open   zipkin:span-2018-05-15 8vnm9SJvSlK-cAtakK8VeQ   3   1          9            0     47.3kb         47.3kb
yellow open   zipkin:span-2018-05-14 TZ-MmJpoSs-NwjHjxEvhFQ   3   1        219            0    127.1kb        127.1kb
yellow open   student                iZPqPcwrQbifGOfE9DQYvg   5   1          0            0       955b           955b

然後在 Kibana 上面創建filebeat-*索引:

創建好之後,就可以看到整個日誌數據了:

和上面 Logstash 收集 rsyslog 日誌數據一樣,Filebeat 配置的,也是收集的/var/log/messages日誌數據。

可以看到,system-syslogfilebeat-索引對應的日誌數據,是同步更新的(如果沒效果,重啟下 Logstash 和 Filebeat)。

7. Filebeat 採集日誌數據,Logstash 過濾

先停止 Logstash 和 Filebeat:

[root@node1 ~]# systemctl stop logstash && 
systemctl stop filebeat

然後刪除上面產生的索引日誌數據:

[root@node1 ~]# curl -XDELETE http://node1:9200/system-syslog-2018.05 && 
curl -XDELETE http://node1:9200/filebeat-2018.05.15

創建新的 Logstash 配置文件:

[root@node1 ~]# vi /etc/logstash/conf.d/logstash-filebeat-syslog.conf
input {
 beats {
   port => 10515
  }
}
filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}
output {
 elasticsearch {
  hosts => [ "node1:9200" ]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  }
}

驗證 Logstash 配置文件,是否有效:

[root@node1 ~]# cd /usr/share/logstash/bin
[root@node1 bin]# ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/logstash-filebeat-syslog.conf --config.test_and_exit
Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties
Configuration OK

編輯 Filebeat 配置文件(註釋掉output.elasticsearch):

[root@node1 ~]# vi /etc/filebeat/filebeat.yml
filebeat.prospectors:
- type: log
   paths:
      - /var/log/messages  # 指定需要收集的日誌文件的路徑
  fields:
    log_type: syslog

output.logstash:
  # The Logstash hosts
  hosts: ["node1:10515"]

重新啟動 Logstash 和 Filebeat:

[root@node1 ~]# systemctl restart logstash && 
systemctl restart filebeat

查看 Logstash 是否正常監聽:

[root@node1 conf.d]# netstat -lnp|grep 10515
tcp6       0      0 :::10515                :::*                    LISTEN      22384/java

8. Filebeat 採集的日誌數據,Logstash 過濾後,在 Kibana 中顯示

可以看到生成了filebeat-*類型的日誌數據(system-syslog-2018.05索引日誌數據,是由 Logstash 的syslog.conf配置文件採集的):

[root@node1 ~]# curl http://node1:9200/_cat/indices?v
health status index                           uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   twitter                         k1KnzWyYRDeckjt7GASh8w   5   1          1            0      5.2kb          5.2kb
yellow open   .kibana                         8zJGQkq8TwC4s3JJLMX44g   1   1          7            1     57.4kb         57.4kb
yellow open   system-syslog-2018.05           dzRXf3eFQ_-hKqlGILTSJg   5   1        223            0    511.9kb        511.9kb
yellow open   zipkin:span-2018-05-15          8vnm9SJvSlK-cAtakK8VeQ   3   1         49            0    142.6kb        142.6kb
yellow open   filebeat-2018.05.15             eEuumW8pTdeXa7Ny1gLIPQ   5   1        177            0    300.2kb        300.2kb
yellow open   zipkin:span-2018-05-14          TZ-MmJpoSs-NwjHjxEvhFQ   3   1        219            0    127.1kb        127.1kb
yellow open   student                         iZPqPcwrQbifGOfE9DQYvg   5   1          0            0       955b           955b

因為之前創建了filebeat-*system-syslog-*索引,這邊我們可以直接查看日誌數據了:

以上是使用 ELK Logstash 和 Filebeat 採集日誌數據的過程(使用 rsyslog 日誌數據源),後面需要將 ELK 集成到 Spring Cloud/Boot 中,用作整個微服務的集中日誌採集處理中心。

參考資料:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先上解決辦法: $(#formid #inputid).val("") 將這個代碼放在提交按鈕最後就可以了。 我在做一個修改信息的功能時,發現上一次提交的內容在下一次打開的記錄里又顯示出來,因為有一個input框每一個記錄都是不一樣的,為了避免操作人員手工清空內容,我打打算在新記錄修改時候清空這個i ...
  • CSS3 transform變換 1、translate(x,y) 設置盒子位移2、scale(x,y) 設置盒子縮放3、rotate(deg) 設置盒子旋轉4、skew(x-angle,y-angle) 設置盒子斜切5、perspective 設置透視距離6、transform-style fla ...
  • CSS權重 CSS權重指的是樣式的優先順序,有兩條或多條樣式作用於一個元素,權重高的那條樣式對元素起作用,權重相同的,後寫的樣式會覆蓋前面寫的樣式。 權重的等級 可以把樣式的應用方式分為幾個等級,按照等級來計算權重 1、!important,加在樣式屬性值後,權重值為 100002、內聯樣式,如:st ...
  • 詳情請 咨詢 QQ 759104513 精品新增,持續中.... 192、PHP進階:面向對象及TP5框架初識-慕課網職業路徑 191、0961、手把手帶你入坑H5與小程式直播開發 190、SpringBoot2.0不容錯過的新特性 WebFlux響應式編程 189、Vue2.5開發去哪兒網App ...
  • 定位 關於定位 我們可以使用css的position屬性來設置元素的定位類型,postion的設置項如下: relative 生成相對定位元素,元素所占據的文檔流的位置不變,元素本身相對文檔流的位置進行偏移 absolute 生成絕對定位元素,元素脫離文檔流,不占據文檔流的位置,可以理解為漂浮在文檔 ...
  • css元素溢出 當子元素的尺寸超過父元素的尺寸時,需要設置父元素顯示溢出的子元素的方式,設置的方法是通過overflow屬性來設置。 overflow的設置項: 1、visible 預設值。內容不會被修剪,會呈現在元素框之外。2、hidden 內容會被修剪,並且其餘內容是不可見的,此屬性還有清除浮動 ...
  • json數據作為和後臺交互的良好交互方式,這裡介紹下前端怎麼封裝成json數據給到後臺。 示例代碼: (1)封裝成json數據 最終結果為:{"id":0,"name":"張三","job":"學生"} (2)封裝成json數組 最終結果為:[{"id":0,"name":"張三","job":"學 ...
  • 前言 ​最近,被推送了不少秒殺架構的文章,忙裡偷閑自己也總結了一下互聯網平臺秒殺架構設計,當然也借鑒了不少同學的思路。俗話說,脫離案例講架構都是耍流氓,最終使用SpringBoot模擬實現了部分秒殺場景,同時跟大家分享交流一下。 秒殺場景 秒殺場景無非就是多個用戶在同時搶購一件或者多件商品,專用辭彙 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...