업로드 되는 로그 파일 샘플 다운로드

access_sample.log

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)