업로드 되는 로그 파일 샘플 다운로드
import streamlit as st
import pandas as pd
uploaded_file = st.file_uploader('엑셀 파일 업로드', type=['log'])
if uploaded_file is not None:
logs = uploaded_file.read().decode('utf-8')
log_lines = logs.split('\\n')
log_data = [line.split(' ') for line in log_lines]
df = pd.DataFrame(log_data)
st.write(df)
import streamlit as st
import pandas as pd
from collections import Counter
uploaded_file = st.file_uploader('엑셀 파일 업로드', type=['log'])
if uploaded_file is not None:
logs = uploaded_file.read().decode('utf-8')
log_lines = logs.split('\\n')
ip_addresses = [line.split(' ')[0] for line in log_lines]
top_ip_addresses = Counter(ip_addresses).most_common(10)
st.subheader('상위 10개 IP 주소')
for ip, count in top_ip_addresses:
st.write(f'IP주소: {ip}, 출현 횟수: {count}')
import streamlit as st
import pandas as pd
from collections import Counter
import matplotlib.pyplot as plt
uploaded_file = st.file_uploader('로그 파일 분석', type=['log'])
if uploaded_file is not None:
logs = uploaded_file.read().decode('utf-8')
log_lines = logs.split('\\n')
ip_addresses = [line.split(' ')[0] for line in log_lines]
top_ip_addresses = Counter(ip_addresses).most_common(10)
st.subheader('상위 10개 IP 주소')
for ip, count in top_ip_addresses:
st.write(f'IP주소: {ip}, 출현 횟수: {count}')
ip_counts = dict(top_ip_addresses)
ip_df = pd.DataFrame(ip_counts.items(), columns=['IP', 'Count'])
fig_bar = plt.figure(figsize=(10, 6))
plt.barh(ip_df['IP'], ip_df['Count'])
plt.xlabel('Count')
plt.ylabel('IP Address')
plt.title('IP Address Count')
st.pyplot(fig_bar)
# Pie 형태의 차트 시각화
fig_pie = plt.figure(figsize=(10, 6))
plt.pie(ip_df['Count'], labels=ip_df['IP'], autopct='%1.1f%%')
plt.title('IP Address Distribution')
st.pyplot(fig_pie)